package net.linku.utils;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;

/**
 * JsonUtil 工具类，用于将对象转换为 JSON 字符串。
 *
 * @version 1.0
 * @date 2024/7/15
 */
@Slf4j
public class JsonUtil {

    private static final ObjectMapper objectMapper = new ObjectMapper();

    /**
     * 将对象转换为 JSON 字符串。
     *
     * @param obj 要转换的对象
     * @return JSON 字符串
     */
    public static String toJson(Object obj) {
        try {
            return objectMapper.writeValueAsString(obj);
        } catch (JsonProcessingException e) {
            log.error("JSON 转换错误: {}", e.getMessage());
            return null;
        }
    }

    /**
     * 将 JSON 字符串转换为对象。
     *
     * @param json  JSON 字符串
     * @param clazz 对象的类
     * @param <T>   对象的类型
     * @return 转换后的对象
     */
    public static <T> T fromJson(String json, Class<T> clazz) {
        try {
            return objectMapper.readValue(json, clazz);
        } catch (JsonProcessingException e) {
            log.error("JSON 字符串转换为对象失败: {}", e.getMessage());
            return null;
        }
    }
}
